import $HTTP from '@/utils/quest/request.js';
export default {
	// state vuex的基本数据，用来存储变量
	state: {
		// 登录状态
		loginStatus: false,
		// token
		token: '',
	
		// 用户手机号
		userPhone: '',
		// 用户等级
		merchant: 1,
		// 用户信息
		userInfo: {

		}
	},
	// getters 从基本数据(state)派生的数据，相当于state的计算属性
	getters: {
		// getCodeQuery 是后端解析code 的返回
		// getCodeQuery: (state) => {
		// 	console.log('执行了getCodeQuery')
		// 	let opt = {
		// 		session_key: state.session_key,
		// 		openid: state.openid
		// 	}
		// 	return opt;
		// },
		// 获取登录状态
		loginStatus: (state) => {
			return state.loginStatus;
		},
		// 获取该用户等级
		merchant: (state) => {
			return state.merchant;
		},
		// 获取登录状态
		userInfo: (state) => {
			return state.userInfo;
		}
	},
	// mutation：提交更新数据的方法，必须是同步的(如果需要异步使用action)。每个 mutation 都有一个字符串的 事件类型 (type) 和 一个 回调函数 (handler)。
	mutations: {
		
		// 获取用户手机号
		setUserPhone(state, info) {
			state.userPhone = info;
			console.log('state.userPhone', state.userPhone)
		},
		// 初始化登录状态
		initUser(state){
			console.log('初始化登录状态')
			let userInfo = uni.getStorageSync('userInfo'),token = uni.getStorageSync('TOKEN')
			if (userInfo) {
				userInfo = JSON.parse(userInfo)
				state.userInfo = userInfo
				state.token = token;
				console.log('99999999999999999999999999',userInfo)
				console.log('8788888888',state)
				state.merchant = userInfo.merchant;
				state.loginStatus = true;
			}else{
				
			}
		},
		// 登录
		login(state, userinfo) {
			console.log('登录userinfo', userinfo)

			state.loginStatus = true
			state.userInfo = userinfo
			state.token = userinfo.token
			state.merchant = userinfo.merchant;
			// // 持久化存储
			uni.setStorageSync('userInfo', JSON.stringify(userinfo))
			uni.setStorageSync('TOKEN', userinfo.token)
		},
		// 退出登录
		logout(state){
			console.log('已经调用了这个方法')
			state.userInfo = {}
			state.loginStatus = false
			state.token = null
			uni.removeStorageSync('userInfo')
		}

	},
	// action：和mutation的功能大致相同，不同之处在于 ==》1. Action 提交的是 mutation，而不是直接变更状态。 2. Action 可以包含任意异步操作。
	actions: {
		// 获取用户信息
		getUserInfo({
			commit,
			state
		}) {
			console.log('获取用户信息', state)
			$HTTP.get('/mobile/user/userInfo', {}, {
				token: true
			}).then(res => {
				console.log('res', res)
				commit('login', res.data);
			})
		}
	}
}
